Proxies are intermediate systems or applications used to improve the end-to-end communication performance of devices connected to a network. Transmission control protocol (“TCP”) proxies are a type of proxy that can be used in a variety of settings. For example, TCP proxies can be used in networks to optimize traffic, providing a superior user experience. Additionally, TCP proxies can be used for content filtering and security services.
In many instances where TCP proxies are used, it is beneficial to know the attributes of the client device associated with a specific traffic flow. For example, a traffic management system used to optimize traffic in a cellular mobile carrier network can tune the optimization settings to suit the form factor, screen size, and other capabilities of the client device. Knowing the precise identity of client devices (e.g., manufacturer, model, and operating system version) is useful not only for traffic management systems, but also for reporting systems that provide detailed insight into the makeup of the traffic. The identity of the client device, however, cannot be determined from the information available at the TCP/IP level of the packet flow.